package com.xiaoshuidi.cloud.module.contract.service.bill.dto;

import com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo.orderFees.OrderFeesCreateReqVO;
import com.xiaoshuidi.cloud.module.contract.enums.bill.OrderPayStatusEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description:
 * @author: zhaoyu
 * @date: 2023/6/12
 */
@Data
public class RentOrderCreateDTO {
    /**
     * 业务id 如 合同id 、预定id
     */
    private Long businessId;

    /**
     * 公寓id
     */
    private Long apartmentId;

    /**
     * 公寓名称
     */
    private String apartmentName;

    /**
     * 房间id
     */
    private Long roomId;

    /**
     * 房间名称
     */
    private String roomName;

    /**
     * 此订单开始时间
     */
    private LocalDate startTime;

    /**
     * 此订单结束时间
     */
    private LocalDate endTime;

    /**
     * 已收账单总额
     */
    private BigDecimal paidRentUtilities;
    /**
     * 账单总金额
     */
    private BigDecimal totalAmount;

    /**
     * 租金金额
     */
    private BigDecimal rentAmount;

    /**
     * 押金金额
     */
    private BigDecimal depositAmount = BigDecimal.ZERO;

    /**
     * 杂费金额
     * */
    private BigDecimal extrasAmount = BigDecimal.ZERO;

    /**
     * 租金押金金额
     */
    private BigDecimal rentDeposit = BigDecimal.ZERO;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 优惠前原租金
     */
    private BigDecimal rawAmount = BigDecimal.ZERO;

    /**
     * 原押金
     */
    private BigDecimal oldDepositAmount = BigDecimal.ZERO;

    /**
     * 支付状态(unpaid 待支付 |payment 已支付|part  部分支付),
     */
    private String payStatus = OrderPayStatusEnum.UNPAID.getCode();
    /**
     * 此订单支付时间
     */
    private LocalDate oughtPayTime;

    /**
     * 此订单最晚支付时间
     */
    private LocalDate deadlinePayTime;

    /**
     * 此订单实际支付时间
     */
    private LocalDateTime actualPayTime;

    /**
     * 审批状态(notReview  无需审核|inReview 审核中|effective 已生效|(reject 已驳回)
     */
    private String approvedStatus;
    /**
     * 结算状态(0, 未结算|1, 已结算),
     */
    private Integer payOutStatus = 0;
    /**
     * 账单类型 default 合同账单| custom 杂费账单| free  免租期账单| meter  抄表账单| carry 结转账单 | owner 业主账单
     */
    private String orderType;
    /**
     * 支付次数
     */
    private Integer payTimes = 0;
    /**
     * 是否已清算
     */
    private Integer cleared = 0;
    /**
     * 账单归属人
     */
    private Long roommateId;
    /**
     * 手机号
     */
    private String phone;

    /**
     * 备注
     */
    private String remark;

    /**
     * 资金流向 0 流入 | 1 流出
     */
    private Integer flowType;

    /**
     * 账单明细
     */
    private List<OrderFeesCreateReqVO> feeDetail;

}
